package com.student.liu.service;

import com.baomidou.mybatisplus.core.metadata.IPage;
import com.baomidou.mybatisplus.extension.service.IService;
import com.student.liu.entity.LeaveApply;
import com.student.liu.entity.Reimbursement;

import java.time.LocalDateTime;
import java.util.Date;
import java.util.Map;

/**
 * 报销申请 Service
 */
public interface IReimbursementService extends IService<Reimbursement> {


    /**
     * 查询我的报销记录
     * @param pageIndex
     * @param pageSize
     * @return
     */
    IPage<Map<String, Object>> pageMyReimbursementInfo(Integer pageIndex, Integer pageSize);

    /**
     * 查询报销记录（管理员或者boss去查询的）
     * @param pageIndex
     * @param pageSize
     * @param username
     * @return
     */
    IPage<Map<String, Object>> pageReimbursementInfo(Integer pageIndex, Integer pageSize, String username);

    /**
     * 提交申请
     * @param categoryId
     * @param ReiName
     * @param money
     * @param reimbursetime
     * @param producetime
     * @param reason
     */
    void submitApply(Byte categoryId, String ReiName, Integer money, LocalDateTime reimbursetime, LocalDateTime producetime, String reason);


    /**
     * 撤回申请
     * @param reimbursementId
     */
    void callbackApply(Integer reimbursementId);

    /**
     * 获取审批数据
     * @param processInstanceId 流程的实例ID
     */
    Map<String, Object> approval(String processInstanceId);

    /**
     * 处理请假申请（通过）
     * @param reimbursementId
     * @param disposeReason
     */
    void passDispose(int reimbursementId, String disposeReason, String taskID);

    /**
     * 处理请假申请（驳回）
     * @param reimbursementId
     * @param disposeReason
     */
    void rejectDispose(int reimbursementId, String disposeReason, String taskID);
}
